// createUI関数を定義します。引数はthisObjです。
function createUI(thisObj) {
// thisObjがPanelインスタンスならそのままmyPanelに代入し、そうでなければ新たにWindowを作成します。
var myPanel = (thisObj instanceof Panel) ? thisObj : new Window("palette", "My Script", undefined, {resizeable:true});
// ベースとなるUIのレイアウトを定義します。
var res = "group{orientation:'column', alignChildren:['fill', 'top'],
inputField: EditText{text:'Enter Text', characters:30},
dropdown: DropDownList{properties:{items:['upSide', 'middle', 'downSide']}},
loadButton: Button{text:'Load JSON'},
createButton: Button{text:'Create Text Layer'},
}";
// 定義したリソース文字列をパネルに追加します。
myPanel.grp = myPanel.add(res);
// パネルのレイアウトを設定し直します。
myPanel.layout.layout(true);
// パネルの最小サイズを現在のサイズに設定します。
myPanel.grp.minimumSize = myPanel.grp.size;
// パネルのサイズを再設定します。
myPanel.layout.resize();
// loadButtonがクリックされたときの動作を定義します。ここではloadJson関数を呼び出します。
myPanel.grp.loadButton.onClick = function() {
var file = File.openDialog("Select a JSON file");
if (file !== null) { // ユーザーがファイルを選択した場合
myPanel.rectData = loadJson(file);
// TODO: myPanel.rectDataを使った処理を書く
var stringifiedData = JSON.stringify(myPanel.rectData, null, 2); // オブジェクトを文字列に変換
alert(stringifiedData); // アラートで内容を表示
}
}
// パネルがリサイズされたとき、レイアウトも一緒にリサイズするように設定します。
myPanel.onResizing = myPanel.onResize = function () {this.layout.resize();}
myPanel.grp.createButton.onClick = function() {
var selectedName = myPanel.grp.dropdown.selection.text;
var text = myPanel.grp.inputField.text;
if (myPanel.rectData) { // JSONデータがロードされていることを確認
createRectangle_fromJson(selectedName, myPanel.rectData);
createTextLayer(text, selectedName,myPanel.rectData);
} else {
alert("Please load a JSON file first.");
}
}
// パネルオブジェクトを返します。
return myPanel;
}
Creation Date: 2023-08-01
Creator: hoehoe
Source: GPT4